The evolving answer to reusing logic across components without duplicating it.
React's approach to sharing logic across components has gone through real evolution. Mixins (deprecated early on) let you merge behavior into a component but caused implicit dependencies and naming collisions that made components fragile and hard to reason about. Higher-Order Components and render props both solved this more explicitly, by wrapping a component or passing a render function — but both added extra components to the tree just to share logic.
Hooks became the default because they solve the same problem — sharing logic across components — without wrapping anything or adding to the component tree at all; a custom hook is just a function. That said, HOCs and render props haven't disappeared: plenty of libraries (routing, state management) still expose HOC-style APIs like connect() for backward compatibility or specific composition needs, so recognizing all three patterns still matters when reading real codebases.
What you'll walk away knowing